﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include<vector>
using namespace std;
//继承与静态成员变量
class Person
{
public:
	string _name;
	static int count;
};
int Person::count = 0;
class Student :public Person
{
protected:
	int _stuNum;
};
int main()
{
	Person p;
	Student s;
	cout << &p.count << ' ' << &s.count << endl;
	return 0;
}
//继承与友元
//class Student;
//class Person
//{
//public:
//	friend void Display(const Person& p, const Student& s);
//protected:
//	string _name = "张三"; // 姓名
//};
//class Student : public Person
//{
//public:
//	friend void Display(const Person& p, const Student& s);
//protected:
//	int _stuNum = 711; // 学号
//};
//void Display(const Person& p, const Student& s)
//{
//	cout << p._name << endl;
//	cout << s._stuNum << endl;
//}
//int main()
//{
//	Person p;
//	Student s;
//	Display(p, s);
//	return 0;
//}
////小试牛刀
//class A
//{
//public:
//	void fun()
//	{
//		cout << "func()" << endl;
//	}
//};
//class B : public A
//{
//public:
//	void fun(int i)
//	{
//		cout << "func(int i)" << i << endl;
//	}
//};
//int main()
//{
//	B b;
//	b.fun(10);
//	b.fun();
//	return 0;
//};
////基类和派生类间的转换
//class Person
//{
//public:
//	string _name = "张三"; // 姓名
//	string _sex = "男"; // 性别
//	int _age = 1; // 年龄
//};
//class Student : public Person
//{
//public:
//	int _No; // 学号
//};
//int main()
//{
//	Student so;
//	Person pobj = so;
//	return 0;
//}
//int main()
//{
//	Student s;
//	//指针
//	Person* ptr = &s;
//	//引用
//	Person& ref = s;
//	Student p = *ptr;
//
//	return 0;
//}
////int main()
//{
//	Person p;
//	Student* ptr = &p;
//	Student& ref = p;
//}
//int main()
//{
//	Student s;
//	//指针
//	Person* ptr = &s;
//	//引用
//	Person& ref = s;
//	/*cout << ref._name << ' ' << ref._sex << ' ' << ref._age << ' ' << ref._No << endl;*/
//	cout << ref._name << ' ' << ref._sex << ' ' << ref._age  << endl;
//	return 0;
//}
//原写法
//template<class T,class Container = vector<T>>
//class MyStack
//{
//public:
//	void push(const T& x)
//	{
//		_con.push_back(x);
//	}
//	void pop()
//	{
//		_con.pop_back();
//	}
//	const T& top()
//	{
//		return _con.back();
//	}
//	bool empty()
//	{
//		return _con.empty();
//	}
//private:
//	Container _con;
//};
//template<class T>
//class Stack :public vector<T>
//{
//public:
//	void push(const T& x)
//	{
//		// 基类是类模板时，需要指定⼀下类域，
//		vector<T>::push_back(x);
//		//push_back(x);这种会报错
//	}
//	void pop()
//	{
//		vector<T>::pop_back();
//	}
//	const T& top()
//	{
//		return vector<T>::back();
//	}
//	bool empty()
//	{
//		return vector<T>::empty();
//	}
//};
//
//class Person
//{
//public:
//	void Print()
//	{
//		cout << _name << endl;
//	}
//protected:
//	string _name; // 姓名
//private:
//	int _age;
//	// 年龄
//};
////class Student : protected Person
////class Student : private Person
//class Student : public Person
//{
//protected:
//	int _stunum; // 学号
//};
//用继承写的类
////父类/基类
//class Person
//{
//private:
//	int _age;
//};
////子类/派生类
//class Student : public Person
//{
//	//……
//};
//class Person
//{
//public:
//	// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证
//	void identity()
//	{
//		cout << "void identity()" << _name << endl;
//	}
//protected:
//	string _name = "张三"; // 姓名
//	string _address;
//	// 地址
//	string _tel;
//	// 电话
//	int _age = 18;
//	// 年龄
//};
////派生类/子类
//class Student : public Person 
//{
//public:
//	// 学习
//	void study()
//	{
//		// ...
//	}
//protected:
//	int _stuid;
//	// 学号
//};
//class Teacher : public Person
//{
//public:
//	// 授课
//	void teaching()
//	{
//		//...
//	}
//protected:
//	string title;
//	// 职称
//};
////原类
//class Student
//{
//public:
//	// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证
//	void identity()
//	{
//		// ...
//	}
//	// 学习
//	void study()
//	{
//		// ...
//	}
//protected:
//	string _name = "peter"; // 姓名
//	string _address;
//	// 地址
//	string _tel;
//	// 电话
//	int _age = 18;
//	// 年龄
//	int _stuid;
//	// 学号
//};
//class Teacher
//{
//public:// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证
//	void identity()
//	{
//		// ...
//	}
//	// 授课
//	void teaching()
//	{
//		//...
//	}
//protected:
//	string _name = "张三";
//	// 姓名
//	int _age = 18;
//	// 年龄
//	string _address;
//	// 地址
//	string _tel;
//	// 电话
//	string _title;
//	// 职称
//};